In multiprocessing computer systems, threads from multi-threaded computer application programs are run under rules or protocols that synchronize resources with threads acquiring or seeking particular resources so that only one thread may acquire or lock a resource object to the mutual exclusion of all other threads. If a thread acquires a lock on an object, that thread owns or holds the lock on the object and all other threads seeking or contending to acquire the particular object will not be allowed to access the object until the lock is released.
When a thread seeking to acquire a lock on an object that is currently locked continuously iteratively checks for the release of that lock, the condition is called spinning. When a specific thread spins instead of yielding central processing unit (CPU) time to another thread, there is a question of whether the computer resources are being used effectively. The effectiveness of time of spinning varies from resource lock to resource lock, i.e., spinning may be an effective use of CPU time with respect to one resource lock but not to another. As a result, adaptive spinning has been developed wherein data is developed by dynamically collecting, i.e. sampling data of spinning threads for specific locks while computer program applications are being run, and this collected data is used to adaptively enable/disable spinning of threads requesting selected locks so as to minimize spinning on locks for which the use of CPU time is not beneficial while maximizing spinning for which the use of CPU time is effective.